package talent.vo;

import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 人才信息视图对象（VO）
 * <p>
 * 用于前端展示人才详细信息，包含人才基本属性、能力评估指标及活跃度数据。
 * 通过 Lombok 的 {@code @Data} 注解自动生成 getter/setter 等方法[9](@ref)[10](@ref)。
 *
 * @author 系统生成
 * @version 1.0
 * @since 2025-06-11
 */
@Data
public class TalentVO {
    /** 人才唯一标识ID（数据库主键） */
    private Long id;

    /** 人才姓名 */
    private String name;

    /**
     * 性别
     * <p>可选值：男/女/其他
     */
    private String gender;

    /** 出生年月日（格式：yyyy-MM-dd） */
    private LocalDate birthDate;

    /** 手机号码（11位数字） */
    private String phone;

    /** 头像图片URL或存储路径 */
    private String avatar;

    /**
     * 学历等级
     * <p>1-不限学历, 2-大专以下, 3-大专, 4-本科, 5-研究生, 6-博士
     */
    private Integer educationLevel;

    /**
     * 项目数量等级
     * <p>1-做过一个项目, 2-做过两个项目, 3-做过三个项目
     */
    private Integer projectCount;

    /**
     * 工作经验等级
     * <p>1-不限经验, 2-一年经验以内, 3-一年经验, 4-两年经验,
     * <p>5-三年经验, 6-三到五年经验, 7-五到八年经验, 8-八到十年经验
     */
    private Integer workExperience;

    /** 毕业院校名称 */
    private String university;

    /** 所学专业名称 */
    private String major;

    /**
     * 常用技能（JSON格式存储）
     * <p>示例：["Java", "Python", "MySQL"]
     */
    private String skills;

    /**
     * 获奖情况（JSON格式存储）
     * <p>示例：["ACM金奖", "Kaggle银牌"]
     */
    private String awards;

    /** 期望岗位（如：Java开发工程师） */
    private String desiredPosition;

    /** 期望薪资（单位：元/月） */
    private Integer expectedSalary;

    /** 最近登录时间（格式：yyyy-MM-dd HH:mm:ss） */
    private LocalDateTime lastLogin;

    /** 发布稿子数量 */
    private Integer postsCount;

    /** 学习视频总时长（单位：分钟） */
    private Integer videoLearningDuration;

    /** 使用软件的时长（单位：分钟） */
    private Integer softwareUsageDuration;

    /** 计划完成率（0-100整数，百分比值） */
    private Integer planCompletionRate;

    /** 数据创建时间（格式：yyyy-MM-dd HH:mm:ss） */
    private LocalDateTime createdAt;

    /** 数据最后更新时间（格式：yyyy-MM-dd HH:mm:ss） */
    private LocalDateTime updatedAt;

    /**
     * 人才排名评分（0.0-10.0）
     * <p>根据技能、经验、教育背景等维度计算的综合得分，
     * <p>用于人才推荐排序
     */
    private Double rankingScore;

    /** 活跃度评分（0-100） */
    private Double activeScore;

    /**
     * 综合评分（0.0-100.0）
     * <p>综合软件使用时长、视频学习时长、计划完成率和最后更新时间等多个维度的评分
     */
    private Double compositeScore;
}